using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using Microsoft.VisualBasic;
using System.IO;
namespace ControllaMail
{
class Program
{
static void Main(string[] args)
{
System.Console.Title = "ControllaMail - RDC";
string risposta;
TcpClient server
= new TcpClient
("in.alice.it", 110
);
if (server.Connected)
{ Console.WriteLine("Connessione avvenuta"); }
else
{
Console.WriteLine("Connessione fallita");
Console.Read();
server.Close();
return;
}
NetworkStream serverStream = server.GetStream();
rispostaServer(serverStream);
Console.Write("\n\n");
risposta = invia(serverStream, "user yyyyyyy");
if (risposta != null) { Console.WriteLine("User " + risposta); }
else
{
Console.Write("\nUser non scritto");
serverStream.Close();
server.Close();
return;
}
risposta = invia(serverStream, "pass xxxxxx");
if (risposta != null) { Console.WriteLine("Password " + risposta); }
else
{
Console.WriteLine("\nPassword non scritta");
serverStream.Close();
server.Close();
return;
}
risposta = invia(serverStream,"list");
if (risposta != null)
{
Console.WriteLine(risposta);
int numeroMessggi = Int32.Parse(risposta.Split(' ')[1]);
Console.WriteLine(numeroMessggi);
risposta = riceviMail(serverStream, numeroMessggi);
if (risposta != null)
{
Console.WriteLine("\n\nUltimo Messaggio\n\n");
Console.Write(risposta);
}
}
Console.WriteLine(invia(serverStream,"quit"));
Console.WriteLine("Debug2");
Console.WriteLine(Console.ReadLine());
serverStream.Close();
server.Close();
}
public static string invia(NetworkStream ns, string s)
{
byte[] command = System.Text.Encoding.Default.GetBytes(s + "\r\n");
StreamReader strReader
= new StreamReader
(ns
);
if (s != "list")
{
if (ns.CanWrite)
{
ns.Write(command, 0, command.Length);
if (ns.CanRead)
{
return strReader.ReadLine();
}
}else return null;
}
else
{
Console.WriteLine("Invia->list ! ");
string ricevuta1 = null;
string ricevuta2 = null;
while (ns.CanRead) //Questo ciclo è maledetto!!!
{
ricevuta2 = ricevuta1;
ricevuta1 = strReader.ReadLine();
Console.WriteLine(ricevuta1);
if (ricevuta1 == ".")
break;
}
return ricevuta2;
}
return null;
}
public static void rispostaServer(NetworkStream ns)
{
if (ns.CanRead)
{
StreamReader strReader
= new StreamReader
(ns
); Console.WriteLine(strReader.ReadLine());
}
}
public static string riceviMail(NetworkStream ns, int n)
{
byte[] command = System.Text.Encoding.Default.GetBytes("retr " + n + "\r\n");
StringBuilder sb
= new StringBuilder
(); if (ns.CanWrite)
{
StreamReader strReader
= new StreamReader
(ns
); ns.Write(command, 0, command.Length);
Console.WriteLine("riceviMail1");
String ricevuta;
while(ns.CanRead)
{
ricevuta = strReader.ReadLine();
if (ricevuta != ".")
sb.AppendLine(ricevuta);
else { break; }
Console.WriteLine("RigaLetta : "+ricevuta);
}
return sb.ToString();
}
else return null;
}
}
}